/**
 * All Rights Reserved , Copyright (C) 2020 , 青岛鼎信通讯股份有限公司
 * IWorkScheduleService
 * 工作日程表
 * 修改纪录
 * 2020-10-24 版本：1.0 zhanglongfei 创建。
 *
 * @version 版本：1.0
 * @author 作者：zhanglongfei
 * 创建日期：2020-10-24
 */
package com.topscomm.work.service;

import java.util.List;
import java.util.Map;

import com.topscomm.base.pojo.BasePermissionManageEntity;
import com.topscomm.base.pojo.BaseRemindConfigEntity;
import com.topscomm.tap.common.SessionUserBean;
import com.topscomm.work.IWorkService;
import com.topscomm.work.dao.IWorkScheduleDao;
import com.topscomm.work.pojo.WorkScheduleEntity;

public interface IWorkScheduleService extends IWorkService<WorkScheduleEntity, IWorkScheduleDao> {
	/**
	 * @description:日历添加日程，顺便保存任务
	 * @param entity
	 * @param taskEntity
	 * @return
	 * @author: zhanglongfei
	 * @date: 2020年10月27日下午3:39:15
	 * @modify:
	 */
	WorkScheduleEntity saveCalendarEntity(Map<String, Object> paraMap);

	/**
	 * @description:单纯修改日期信息
	 * @param paraMap
	 * @return
	 * @author: zhanglongfei
	 * @date: 2020年10月29日下午5:33:53
	 * @modify:
	 */
	void changeCalendarTime(Map<String, Object> paraMap) throws Exception;

	/**
	 * @description:整理前台传过来的用户数据
	 * @param paraMap
	 * @return
	 * @author: zhanglongfei
	 * @date: 2020年11月2日下午4:38:49
	 * @modify:
	 */
	List<BasePermissionManageEntity> processSelectUsers(Map<String, Object> paraMap);

	/**
	 * 对外提交日程
	 *
	 * @description:
	 * @param workScheduleEntity
	 * @param personEntityList：权限管理
	 * @param remindList：提醒配置
	 * @author: donghang
	 * @date: 2020年11月5日下午4:11:43
	 * @modify:
	 */
	void submitWorkSchedule(WorkScheduleEntity workScheduleEntity, List<BasePermissionManageEntity> personEntityList,
			List<BaseRemindConfigEntity> remindList, boolean isSendMessage, boolean isFirstPublish);

	/**
	 * 取消日程
	 *
	 * @description:
	 * @param sourceapp
	 * @param soutcetype
	 * @param sourceid
	 * @author: donghang
	 * @date: 2020年11月5日下午10:04:02
	 * @modify:
	 */
	void cancelWorkSchedule(String sourceapp, String soutcetype, String sourceid);

	/**
	 * @description:日程修改后，通知用户 当前规则：若给他人新增日程，则发送消息提醒
	 *                         若修改日程，并且日程的开始时间发生变化，则给日程接收人发送修改通知
	 *                         若从日程中取消人，则给日程接收人发送撤销通知
	 * @param scheduleEntity
	 * @param newUserList
	 * @param oldUserList
	 * @param isPushEdit是否要推送编辑用户的信息
	 * @param isDel是否是删除了此条日程
	 * @author: zhanglongfei
	 * @date: 2020年11月12日下午3:12:40
	 * @modify:
	 */
	void pushRemindTask(WorkScheduleEntity scheduleEntity, List<BasePermissionManageEntity> newUserList,
			List<BasePermissionManageEntity> oldUserList, boolean isPushEdit, boolean isDel, SessionUserBean userBean);

	/**
	 * 从OA日程到会议的日程
	 *
	 * @param inputMap
	 * @return
	 */
	Map syncTOAWork(Map<String, Object> inputMap);

	/**
	 * @description:批量添加，对外接口
	 * @param list
	 * @param isSendMessage
	 * @author: zhanglongfei
	 * @date: 2020年11月27日下午5:57:47
	 * @modify:
	 */
	void mulitSubmitWorkSchedule(List<Map<String, Object>> list, boolean isSendMessage);
}
